using Sage.CloudStorage.Qiniu.Models;
using Sage.CloudStorage.Qiniu.Storage;
using System.Text.Json.Nodes;
using System.Text.Json.Serialization;

namespace Sage.CloudStorage.Qiniu
{
    [JsonSourceGenerationOptions(
        DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,
        WriteIndented = false,
        PropertyNamingPolicy = JsonKnownNamingPolicy.CamelCase)]

    [JsonSerializable(typeof(UploadPolicy))]
    [JsonSerializable(typeof(ListPartsResponse))]
    [JsonSerializable(typeof(CompleteMultipartUploadResponse))]
    [JsonSerializable(typeof(CompleteMultipartUploadRequest))]
    [JsonSerializable(typeof(UploadPartResponse))]
    [JsonSerializable(typeof(InitiateMultipartUploadResponse))]
    [JsonSerializable(typeof(PfopResult))]
    [JsonSerializable(typeof(PrefopResult))]
    [JsonSerializable(typeof(CdnBandwidthResult))]
    [JsonSerializable(typeof(CdnLogListResult))]
    [JsonSerializable(typeof(CdnRefreshResult))]
    [JsonSerializable(typeof(CdnPrefetchResult))]
    [JsonSerializable(typeof(DfopResult))]
    [JsonSerializable(typeof(BucketListResult))]
    [JsonSerializable(typeof(FileInfoResult))]
    [JsonSerializable(typeof(DomainListResult))]
    [JsonSerializable(typeof(FileListResult))]
    [JsonSerializable(typeof(UploadResult))]
    [JsonSerializable(typeof(BlockUploadResult))]
    [JsonSerializable(typeof(CdnUrlRefreshRequest))]
    [JsonSerializable(typeof(CdnDirRefreshRequest))]
    [JsonSerializable(typeof(CdnPrefetchRequest))]
    [JsonSerializable(typeof(CdnBandwidthRequest))]
    [JsonSerializable(typeof(CdnLogListRequest))]

    [JsonSerializable(typeof(object))]
    [JsonSerializable(typeof(JsonObject))]
    [JsonSerializable(typeof(JsonNode))]
    [JsonSerializable(typeof(JsonValue))]
    [JsonSerializable(typeof(JsonArray))]
    [JsonSerializable(typeof(Dictionary<string, JsonNode>))]
    [JsonSerializable(typeof(Dictionary<string, JsonObject>))]
    [JsonSerializable(typeof(Dictionary<string, object>))]
    [JsonSerializable(typeof(Dictionary<string, string>))]
    [JsonSerializable(typeof(Dictionary<string, bool>))]
    [JsonSerializable(typeof(Dictionary<string, int>))]
    [JsonSerializable(typeof(Dictionary<string, double>))]
    [JsonSerializable(typeof(Dictionary<string, DateTime>))]
    [JsonSerializable(typeof(bool))]
    [JsonSerializable(typeof(int))]
    [JsonSerializable(typeof(double))]
    [JsonSerializable(typeof(string))]
    [JsonSerializable(typeof(int))]
    [JsonSerializable(typeof(long))]
    [JsonSerializable(typeof(decimal))]
    [JsonSerializable(typeof(string[]))]
    [JsonSerializable(typeof(DateTime))]
    [JsonSerializable(typeof(List<string>))]
    internal partial class QiniuJsonSerializerContext : JsonSerializerContext
    {
    }
}
